home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 2.iso / dist / fw_glimpse.idb / usr / freeware / src / glimpse-3.0 / compress / tsimpletest.c.z / tsimpletest.c
C/C++ Source or Header  |  1997-09-09  |  2KB  |  94 lines

  1. /* Copyright (c) 1994 Sun Wu, Udi Manber, Burra Gopal.  All Rights Reserved. */
  2. /* simple tests which don't need to access indexing data structures */
  3. #include <stdio.h>
  4. #include <string.h>
  5. #define b_sample_size   2048    /* the number of bytes sampled to determine
  6.                                    whether a file is binary  */
  7. #define u_sample_size   1024    /* the number of bytes sampled to determine
  8.                                    whether a file is uuencoded */
  9.  
  10.  
  11. #if    0
  12. /* ---------------------------------------------------------------------
  13.    check for binary stream
  14. --------------------------------------------------------------------- */
  15. ttest_binary(buffer, length)
  16. unsigned char *buffer;
  17. int  length;
  18. {
  19.     int  i=0;
  20.     int  b_count=0;
  21.  
  22.         if(length > b_sample_size) length = b_sample_size;
  23.  
  24.         for(i=0; i<length; i++) {
  25.         if(buffer[i] > 127) b_count++;
  26.     }
  27.         if(b_count*10 >= length) return(1);
  28.         return(0);
  29. }
  30. #else    /*0*/
  31. /* Lets try this one instead: Chris Dalton */
  32. ttest_binary(buffer, length)
  33. unsigned char *buffer;
  34. int  length;
  35. {
  36.     int permitted_errors;
  37.  
  38.     if (length > b_sample_size) { length= b_sample_size; }
  39.     permitted_errors= length/10;
  40.  
  41.     while (permitted_errors && length--) {
  42.     if (!(isgraph(*buffer) || isspace(*buffer))) --permitted_errors;
  43.     }
  44.     return (permitted_errors == 0);
  45. }
  46. #endif    /*0*/
  47.  
  48. /* ---------------------------------------------------------------------
  49.    check for uuencoded stream
  50. --------------------------------------------------------------------- */
  51. ttest_uuencode(buffer, length)
  52. unsigned char *buffer;
  53. int  length;
  54. {
  55.         int  i=0;
  56.     int  j;
  57.  
  58.         if(length > u_sample_size) length = u_sample_size;
  59.  
  60.     if(strncmp((char *)buffer, "begin", 5) == 0) {
  61.         i=5;
  62.         goto CONT;
  63.     }
  64.         i = tmemlook("\nbegin", buffer, length);
  65.     if(i < 0) return(0);
  66. CONT:
  67.     while(buffer[i] != '\n' && i<length) i++;
  68.     if(i == length) return(0);
  69.     i++;
  70.     if(buffer[i] == 'M') {
  71.         if((j=tmemlook("\nM", &buffer[i], length-i)) < 80) return(1);
  72.     }
  73.     else return(0);
  74. }
  75.  
  76. int
  77. ttest_postscript(buffer, length)
  78. unsigned char *buffer;
  79. int  length;
  80. {
  81.     int    i=0;
  82.     char    *first;
  83.  
  84.     while((i<length) && (buffer[i] != '\n')) i++;
  85.     if (i>=length) return 0;
  86.     buffer[i] = '\0';
  87.     if ((first = (char *)strstr((char *)buffer, "PS-Adobe")) == NULL) {
  88.         buffer[i] = '\n';
  89.         return 0;
  90.     }
  91.     buffer[i] = '\n';
  92.     return 1;
  93. }
  94.